﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel.DataAnnotations;

namespace CAOS.Entity
{
    [Table("PAPEL")]
    [Serializable]
    public class Papel : ICAOSEntity
    {
        public Papel()
        {
            this.RecursosPermitidos = new List<Recurso>();
        }

        [Key]
        [Column("PAPE_SQ_PAPEL")]
        public int PapelID { get; set; }

        [Column("PAPE_CD_CODIGO")]
        [Required]
        [StringLength(15, ErrorMessage = "O código do Papel deve possuir de 3 a 15 caracteres.", MinimumLength = 3)]
        [RegularExpression(@"(\S)+", ErrorMessage = "Espaços em branco não são permitidos.")]
        public string Codigo { get; set; }

        [Column("PAPE_NM_NOME")]
        [Required]
        [StringLength(20, ErrorMessage = "O nome do Papel deve possuir de 3 a 15 caracteres.", MinimumLength = 3)]
        public string Nome { get; set; }

        [Column("SIST_SQ_SISTEMA")]
        public int SistemaID { get; set; }
        public virtual Sistema Sistema { get; set; }

        public bool IsPapelGestor { get; set; }

        public virtual IList<Recurso> RecursosPermitidos { get; set; }

        public virtual IList<Usuario> Usuarios { get; set; }
    }

    [Serializable]
    public class PapelSerializavel
    {
        public string Codigo { get; set; }
        public string Nome { get; set; }
        public bool IsPapelGestor { get; set; }
    }
}
